//
//  B_1ViewController.m
//  RACExamale
//
//  Created by cym_bj on 2017/11/29.
//  Copyright © 2017年 com.cym. All rights reserved.
//

#import "B_1ViewController.h"
#import <ReactiveObjC/ReactiveObjC.h>
#import "Flag.h"

@interface B_1ViewController ()

@end

@implementation B_1ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   
    self.navigationItem.title=@"集合";
    
    
    

    
    
    
    
    
    [self array];
    
    //元组操作
    RACTuple *tuple=[RACTuple tupleWithObjectsFromArray:@[@"12",@"234"]];
    NSLog(@"%@",tuple[0]);
    
    
    
}

#pragma mark - 字典转模型
-(void)dictTransformMode
{
    NSString *filePath=[[NSBundle mainBundle] pathForResource:@"flags.plist" ofType:nil];
    NSArray *dictArray=[NSArray arrayWithContentsOfFile:filePath];
    
    //用法一 转模型
    NSMutableArray *data=[NSMutableArray array];
    
    [dictArray.rac_sequence.signal subscribeNext:^(NSDictionary * x) {
        
        Flag *flag=[Flag flagWithDict:x];
        [data addObject:flag];
        
        //NSLog(@"%@",x);
    }];
    
    //    //用法二，高级用法 会把集合中所有元素都映射成一个新的对象
    //    NSArray *array=[[dictArray.rac_sequence map:^id _Nullable(NSDictionary * value) {
    //
    //        //value:集合中元素
    //        // id:返回对象就是映射的值
    //        NSLog(@"%@",value);
    //        return [Flag flagWithDict:value];
    //
    //    }] array];
    //    NSLog(@"%@",array);
}


#pragma mark - 字典
-(void)dict
{
    NSDictionary *dict=@{@"account":@"aaa",@"name":@"哈哈",@"age":@10};
    
    /*
     
     RACTupleUnpack :用来解析元组
     宏里面的参数,传需要解析出来变量名
     = 右边，放需要解析的元组
     
     */
    
    [dict.rac_sequence.signal subscribeNext:^(RACTuple * x) {
        
        // 方式 一
        //        NSString *key=x[0];
        //        NSString *value=x[1];
        // NSLog(@"%@=%@,",key,value);
        
        // 方式 二
        RACTupleUnpack(NSString *key,NSString *value)=x;
        NSLog(@"%@=%@,",key,value);
        
    }];
    
}

#pragma mark- 数组
-(void)array
{
    NSArray *array=@[@"dd",@"dddd",@"aa"];
    
    //RAC集合
    RACSequence *sequence=array.rac_sequence;
    
    //集合转信号 订阅集合信号 内部会自动遍历所有的元素发出来
    [sequence.signal subscribeNext:^(id  _Nullable x) {
       
        NSLog(@"%@",x);
    }];
    
    
    
    
}
@end
